package com.itheima.stock.mapper;

import com.itheima.stock.common.domain.IncreaseQuery;
import com.itheima.stock.pojo.StockRtInfo;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * @author 司援
 * @description 针对表【stock_rt_info(个股详情信息表)】的数据库操作Mapper
 * @createDate 2022-01-08 20:49:22
 * @Entity com.itheima.stock.pojo.StockRtInfo
 */
public interface StockRtInfoMapper {

    int deleteByPrimaryKey(Long id);

    int insert(StockRtInfo record);

    int insertSelective(StockRtInfo record);

    StockRtInfo selectByPrimaryKey(Long id);

    int updateByPrimaryKeySelective(StockRtInfo record);

    int updateByPrimaryKey(StockRtInfo record);

    /**
     * 沪深两市个股涨幅分时行情数据查询，以时间顺序和涨幅查询前10条数据
     *
     * @return
     */
    List<IncreaseQuery> stockIncreaseLimit();

    /**
     * 根据时间和涨幅降序排序全表查询
     *
     * @return
     */
    List<Map> getStockAll();

    /**
     * 统计指定日期内涨停或者跌停的数据
     * avlDate:股票交易时间
     * flag：1:涨停  0：跌停
     *
     * @return
     */
    List<Map> upDownCount(@Param("avlDate") String avlDate, @Param("flag") Integer flag);


    /**
     * 查询指定时间下股票的涨跌幅度区间统计功能
     * 如果当前日期不在有效时间内，则以最近的一个股票交易时间作为查询时间点
     *
     * @param lastDateTime
     * @return
     */
    List<Map> stockUpDownScopeCount(@Param("avlDate") String avlDate);


    /**
     * 个股分时行情
     * 查询单个个股的分时行情数据，查询时间周期是T日开盘到当前时间
     *
     * @param sotckCode 个股编码
     * @return
     */
    List<Map> stockScreenTimeSharing(@Param("stockCode") String code, @Param("avlDate") String avlDate);

    /**
     * 单个个股日K 数据查询 ，可以根据时间区间查询数日的K线数据
     *
     * @param stockCode 股票编码
     */
    List<Map> stockCreenDkLine(@Param("stockCode") String code, @Param("forwardDate") Date forwardDate);


    /**
     * 批量插入股票信息
     * @param list
     * @return
     */
    void insertBatch(@Param("list") List<StockRtInfo> list);
}
